java正则表达式强密码

您所在的位置:网站首页 强密码正则表达式策略 并且需要排除想qwe 1234这些 java正则表达式强密码

java正则表达式强密码

2024-07-11 08:23| 来源: 网络整理| 查看: 265

要求:

1.必须包含数字、大小写字母 2.密码位数在8-16位

public static boolean checkPas(String pas) { Pattern pattern = Pattern.compile("^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,16}$"); Matcher matcher = pattern.matcher(pas); return matcher.matches(); } 解释一下: (?=.*\d) :表示必须包含数字 (?=.*[a-z]):表示必须包含小写字母 (?=.*[A-Z]):表示必须包含大写字母 .{8,16}:表示任意字符重复8-16次 需要注意的是为什么使用(?=.*\\d) 便可以保证一定会存在数字呢?

首先要知道?=表示的是零宽断言。?=ing即表示匹配以ing结尾的字符串。例如doing,便是匹配其中的do,注意并不会匹配ing。 那(?=.*\\d)又代表什么意思呢? 匹配一个字符串,该字符串后接任意字符+数字。这个字符串实际上就是空字符串。因此在正则表达式"^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,16}$"中。 (?=.*\\d)(?=.*[a-z])(?=.*[A-Z])都表示匹配那样一个空字符串。也就意味着我们的密码必须包含数字、大小写字母。后续的.{8,16}则仅代表重复8到16次的任意字符。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3